<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>数组中有一个数字出现的次数超过数组长度的一半，请找出这个数</title>
</head>
<body>
  <!-- 如果没有返回 -1, 如果有就返回那个数 -->
  <script>
    var arr = [1, 2, 3, 2, 2, 2, 5, 4, 2]
    function fn(nums) {
      var len = nums.length
      var obj = {};
      for (let i = 0; i < len; i++) {
        if (obj[nums[i]] === undefined) {
          obj[nums[i]] = 1
        } else {
          obj[nums[i]]++
        }
      }
      // console.log(obj)
      // Math.ceil 向下取整，例如：Math.ceil(1.1) = 2
      var temp = Math.ceil(len / 2) // temp = 5
      // 遍历数组
      for (let i in obj) {
        // 判断数字大于/等于数组长度的一半，就返回这个数字
        if (obj[i] >= temp) {
          return i
        }
      }
      // 如果数字小于数组长度的一半，就返回-1
      return -1
    }
    console.log(fn(arr))
  </script>
</body>
</html>